package com.fjnu.service;

import com.fjnu.domain.dto.ArticleConditionDto;
import com.fjnu.domain.dto.ArticleUpdateDto;
import com.fjnu.domain.entity.Article;
import com.fjnu.domain.vo.PageResult;

public interface ArticleService {
    /**
     * （1）根据文章条件进行分页查询
     * @param articleCond 文章查询条件
     * @param pageNum 页码
     * @param pageSize 每页大小
     * @return 分页结果对象
     */
    PageResult queryByArticleCondition(ArticleConditionDto articleCond, Integer pageNum, Integer pageSize);

    /**
     * （2）根据文章ID查询文章
     * @param articleId 文章ID
     * @return 文章对象，若不存在则返回null
     */
    Article queryById(String articleId);

    /**
     * （3）新增文章
     * @param article 文章对象
     * @return 带有新增ID的文章对象
     */
    Article insertArticle(Article article);

    /**
     * （4）发布文章
     * @param articleId 文章ID
     * @param userId 用户ID
     * @return 1表示发布成功，0表示发布失败
     */
    int publishArticle(String articleId, String userId);

    /**
     * （5）批量发布文章
     * @param articleIds 文章ID数组
     * @param userId 用户ID
     * @return 1表示成功，0表示失败
     */
    int publishArticlesByBatch(String[] articleIds, String userId);

    /**
     * （6）更新文章
     * @param articleUpdateDto 文章更新数据传输对象
     * @return 1表示成功，0表示失败
     */
    int updateArticle(ArticleUpdateDto articleUpdateDto);

    /**
     * （7）删除文章
     * @param articleId 文章ID
     * @param userId 用户ID
     * @return 1表示成功，0表示失败
     */
    int removeArticle(String articleId, String userId);
}